<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java Management Extensions</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Java_Management_Extensions"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java_Management_Extensions rootpage-Java_Management_Extensions skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java Management Extensions</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Java Management Extensions</b> (<b>JMX</b>) ist eine vom <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a> (JSR-3) entwickelte Spezifikation zur Verwaltung und Überwachung von <a href="Java-Anwendung" title="Java-Anwendung">Java-Anwendungen</a>. Teile der JMX Spezifikation sind bereits in der <a href="Java_(Technologie)#Version_5.0" class="mw-redirect" title="Java (Technologie)">Java 1.5</a> Standard-<a href="Programmierschnittstelle" title="Programmierschnittstelle">API</a> integriert und wurden mit <a href="Java_(Technologie)#Version_6" class="mw-redirect" title="Java (Technologie)">Java 6</a> stark erweitert.
JMX ist nicht nur eine geeignete Technologie, um das Verhalten von Systemen zu kontrollieren, sondern erleichtert auch die Kommunikation von unterschiedlichen Java-Programmen. In der ursprünglichen API unterstützte JMX nur die Kommunikation innerhalb einer JVM (<a href="Java_Virtual_Machine" title="Java Virtual Machine">Java Virtual Machine</a>), aber seit der Java Version 6 wurde auch die Kommunikation mit anderen JVM unterstützt. Dies ist möglich durch die Unterstützung von <a href="Adapter_(Entwurfsmuster)" title="Adapter (Entwurfsmuster)">Adaptern</a> und <a href="Konnektor_(UML)" title="Konnektor (UML)">Konnektoren</a>. Damit lässt sich leicht ein <a href="Hypertext_Transfer_Protocol" title="Hypertext Transfer Protocol">HTTP</a>-Adapter implementieren und die Anwendung ist über einen <a href="Webbrowser" title="Webbrowser">Webbrowser</a> steuerbar. Sollte das System in ein schon bestehendes administriertes Netzwerk integriert werden, können Adapter für <a href="Simple_Network_Management_Protocol" title="Simple Network Management Protocol">SNMP</a> oder <a href="Common_Information_Model" title="Common Information Model">CIM</a>/<a href="Web_Based_Enterprise_Management" title="Web Based Enterprise Management">WBEM</a> der Anwendung hinzugefügt werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Infrastruktur">Infrastruktur</h2></div>
<p>JMX ist in drei wesentliche Ebenen untergliedert.
</p>
<table class="wikitable">
<tbody><tr>
<th>Name
</th>
<th>Beschreibung
</th></tr>
<tr>
<td>Distributed Services Level
</td>
<td>Diese Ebene ist in der Spezifikation noch nicht definiert, ihre eigentliche Aufgabe ist es, Schnittstellen für die Kommunikation mit Komponenten des Agent Levels bereitzustellen. (Dies kann z. B. ein Internet Browser oder ein eigens dafür geschriebener Client sein.)
</td></tr>
<tr>
<td>Agent Level
</td>
<td>In dieser Ebene werden <a href="Software-Agent" title="Software-Agent">Agenten</a> definiert, die für die Kommunikation mit den Ressourcen des Instrumentation Levels zuständig sind.
</td></tr>
<tr>
<td>Instrumentation Level
</td>
<td>Auf dieser Ebene befinden sich <a href="Ressource_(Software)" title="Ressource (Software)">Ressourcen</a> (zu verwaltende Komponenten), die mit Hilfe von MBeans überwacht oder konfiguriert werden.
</td></tr></tbody></table>
<p>Im Instrumentation Level werden die sogenannten MBeans (siehe <a href="#Arten_von_MBeans_(Managed_Beans)">Arten von MBeans (Managed Beans)</a>) registriert. Diese Java-<a href="Objekt_(Programmierung)" title="Objekt (Programmierung)">Objekte</a> werden von den
sogenannten Agents verwaltet. Über den Distributed Service Level kann direkt auf die MBeans zugegriffen
werden. Die Sichtbarkeit wird in den MBeans definiert. Es stehen fertige HTTP-Adapter für JMX zur Verfügung,
wodurch es möglich ist, direkt über einen Webbrowser Werte einer Java-Anwendung zu verändern.
</p>
<div class="mw-heading mw-heading2"><h2 id="JConsole">JConsole</h2></div>
<p>JConsole ist ein <a href="Grafische_Benutzeroberfl%C3%A4che" title="Grafische Benutzeroberfläche">GUI</a>-Programm von <a href="Sun_Microsystems" title="Sun Microsystems">Sun</a>, das zur Verwaltung von MBeans verwendet werden kann. Es wird standardmäßig seit dem JDK 1.5 mitgeliefert.
</p>
<div style="clear:both"></div>
<div class="mw-heading mw-heading2"><h2 id="Arten_von_MBeans_(Managed_Beans)"><span id="Arten_von_MBeans_.28Managed_Beans.29"></span>Arten von MBeans (Managed Beans)</h2></div>
<p>Zur Bewältigung der verschiedensten Aufgaben haben sich in den letzten Jahren verschiedene Arten von MBeans durchgesetzt.
</p>
<ul><li>Standard MBean</li>
<li>Dynamic MBean</li>
<li>Model MBean</li>
<li>Open MBean</li></ul>
<p>Die <b>Standard MBeans</b> können gebildet werden durch die Definition von Interfaces, deren Namen mit "MBean" endet.
</p><p><b>Dynamic MBeans</b> werden während der Laufzeit gebaut und können auch während der Laufzeit verändert werden. Derzeit können nur bei den dynamischen MBeans Attribute und Methoden beschrieben werden. Erst mit Hilfe von Annotations wird dies auch bei Standard MBeans möglich sein.
</p><p>Die <b>Model MBeans</b> sind den dynamischen sehr ähnlich, besitzen aber zusätzlich eine "read" und "write"-Methode, mit der Werte in einer Datei oder in einer Datenbank gespeichert werden. Dabei können OnTimer-Funktionen zum Einsatz kommen, oder über den Notification-Handler kann ein Mitprotokollieren definiert werden. Ein weiterer Vorteil der Model MBeans ist, dass sie direkt im Agent erzeugt werden können.
</p><p>Die <b>Open MBeans</b> haben nur die Standard-Javatypen zur Verfügung, mit dieser Eigenschaft haben sie aber bessere Möglichkeiten mit anderen Programmen außerhalb des Projektes zu kommunizieren.
</p>
<div class="mw-heading mw-heading2"><h2 id="Services_von_JMX">Services von JMX</h2></div>
<p>JMX stellt auch verschiedene Services zur Verfügung, die für die Handhabung und das Monitoring interessant sind.
</p>
<ul><li>M-Let Service</li>
<li>Timer Service</li>
<li>Monitor</li></ul>
<p>Das <b>M-Let Service</b> bietet die Möglichkeit, während der Ausführungszeit Klassen nachzuladen. Über eine Versionskontrolle lässt sich dieser Prozess automatisieren, dabei wird der <i>Bootstrap-class-loader</i> verwendet.
</p><p>Mit dem <b>Timer Service</b> lassen sich periodische Systembeobachtungen durchführen. Es werden nach vordefinierten Zeitabständen <i>Notification</i> geworfen, die von einem Listener abgefangen und bearbeitet werden können.
</p><p>Mit der <b>Monitor</b> Klasse lassen sich einzelne Variablen (Observable) einer MBean beobachten, ohne dass ihre interne Struktur bekannt sein muss. Von diesem Monitor abgeleitet gibt es drei Arten.
</p>
<ul><li>Counter Monitor</li>
<li>Gauge Monitor</li>
<li>String Monitor</li></ul>
<p>Der <b>Counter Monitor</b> eignet sich hauptsächlich für periodische Beobachtungen. Der <b>Gauge Monitor</b> kann das Einhalten von vordefinierten Grenzen überwachen und wirft beim Eintritt des Ereignisses eine <i>Notification</i>. Der <b>String Monitor</b> überwacht die Observablen, ob sie gleich bleiben oder ob sie sich verändern.
</p>
<div class="mw-heading mw-heading2"><h2 id="Implementierungen">Implementierungen</h2></div>
<p>Die folgenden Java-Anwendungen (insbesondere <a href="Anwendungsserver" title="Anwendungsserver">Anwendungsserver</a> und Servlet-Container) bieten eine <a href="Implementierung" title="Implementierung">Implementierung</a> von JMX, die über die seit Java 5 mit dem <a href="Java_Runtime_Environment" class="mw-redirect" title="Java Runtime Environment">Java Runtime Environment</a> ausgelieferte Implementierung hinausgeht:
</p>
<ul><li><a href="Apache_Geronimo" title="Apache Geronimo">Apache Geronimo</a></li>
<li><a href="Apache_Tomcat" title="Apache Tomcat">Apache Tomcat</a></li>
<li><a href="GlassFish" title="GlassFish">GlassFish</a></li>
<li><a href="Oracle" title="Oracle">Oracle</a> Weblogic (früher <a href="BEA_Systems" title="BEA Systems">BEA</a> Weblogic)</li>
<li><a href="IBM" title="IBM">IBM</a> <a href="Websphere" class="mw-redirect" title="Websphere">Websphere</a></li>
<li><a href="JBoss" title="JBoss">JBoss</a> Application Server</li>
<li><a href="Oracle_Application_Server" title="Oracle Application Server">Oracle Application Server</a></li>
<li>mx4j (nur JMX-Server)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>J. Steven Perry: <i>Java Management Extensions</i>. O’Reilly, ISBN 0-596-00245-9</li>
<li>Marc Fleury, Juha Lindfors: <i>JMX: Managing J2EE with Java Management Extensions</i>. Sams Publishing, ISBN 0-672-32288-9</li>
<li>Jeff Hanson: <i>Connecting JMX Clients and Servers: Understanding the Java Management Extensions</i>. APress L. P., ISBN 1-59059-101-1</li>
<li>Benjamin G. Sullins: <i>Mark B Whipple: JMX in Action: You will also get your first JMX application up and running</i>. Manning Publications, 2002, ISBN 1-930110-56-1</li>
<li>Lars Wunderlich: <i>Managing Java</i>. Entwickler Press, ISBN 978-3-939084-13-6</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html">Java Management Extensions (JMX)</a> auf Oracle (Sun)</li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/">Java Community Process Web Seite</a></li>
<li><a rel="nofollow" class="external text" href="http://www.jboss.org/community/docs/DOC-10941">JMX</a> auf JBoss.com</li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=255">JSR 255</a> (JMX 2.0)</li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=160">JSR 160</a> JMX Remote API</li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=3">JSR 3</a> (JMX 1.0, 1.1, und 1.2)</li></ul>
<dl><dt>Artikel</dt></dl>
<ul><li>Marc Fleury, Juha Lindfors: <a rel="nofollow" class="external text" href="http://www.onjava.com/pub/a/onjava/2001/02/01/jmx.html"><i>Enabling Component Architectures with JMX</i>.</a></li>
<li>Andreas Schaefer: <a rel="nofollow" class="external text" href="http://www.onjava.com/pub/a/onjava/2002/03/27/jsr77.html"><i>Introducing A New Vendor-Neutral J2EE Management API</i>.</a></li>
<li>Max Goff: <a rel="nofollow" class="external text" href="http://www.javaworld.com/jw-11-1999/jw-11-management.html"><i>Java in the management sphere</i>.</a></li>
<li>Lucas McGregor: <style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */
.mw-parser-output .webarchiv-memento a{color:inherit}
/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20060902004613/http://java.sys-con.com/read/37797.htm"><i>Managing J2EE Systems with JMX and JUnit</i>.</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> vom 2. September 2006 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>)</li>
<li><a rel="nofollow" class="external text" href="http://jboss.org/index.html?module=html&op=userdisplay&id=developers/projects/jboss/jbossmx">JMX/JBoss</a> – The <a href="Microkernel" class="mw-redirect" title="Microkernel">microkernel</a> design</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-01-28" href="https://de.wikipedia.org/wiki/?title=Java_Management_Extensions&oldid=252764171">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>